package com.test.demo.util;

import com.test.demo.domain.*;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class RobotSerialization {

    // 序列化 List<Robot> 到文件
    public static void serialize(List<Robot> robotList, String fileName) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName))) {
            oos.writeObject(robotList);  // 序列化 List<Robot> 到文件
            System.out.println("List<Robot> 已成功序列化到文件: " + fileName);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 反序列化文件中的 List<Robot>
    public static List<Robot> deserialize(String fileName) {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName))) {
            // 反序列化 List<Robot> 并返回
            List<Robot> robotList = (List<Robot>) ois.readObject();
            System.out.println("从文件中反序列化的 List<Robot>: " + robotList);
            return robotList;
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        // 创建一些 Robot 对象
        List<Robot> robots = new ArrayList<>();
        robots.add(new Robot1(0, 50));  // 金色
        robots.add(new Robot2(50, 100)); // 木色
        robots.add(new Robot3(100, 150)); // 土色
        robots.add(new Robot4(150, 200));// 水色
        robots.add(new Robot5(200, 250)); // 火色

        robots.add(new Robot7(250, 100)); // 火色
        robots.add(new Robot7(500, 100)); // 火色


        robots.add(new Robot7(250, 300)); // 火色
        robots.add(new Robot7(500, 300)); // 火色

        // 序列化到文件
        String filename = "robots.javafx.game";
        serialize(robots, filename);

        // 反序列化并打印
        List<Robot> deserializedList = deserialize(filename);
        if (deserializedList != null) {
            deserializedList.forEach(System.out::println);
        }

    }
}
